Tähän kysymykseen on jo annettu vastauksia täällä: Express js - ei voi ohjata uudelleen (4 vastausta) Suljettu 7 vuotta sitten. Käytän passportjs-tiedostoja, joiden alla on väliohjelmisto. Oletetaan, että tarkistetaan, onko käyttäjä kirjautunut sisään, kun hän pyytää tiettyjä asioita. Jos hän ei ole kirjautunut sisään, hänet tulisi ohjata kirjautumissivulle. Minulla on pyyntöreitti seuraavasti: app.put ('/ fantasyteams /: fantasyTeamId', auth. edellyttää login, fantasyteams.update) Tätä reittiä kutsutaan, kun käyttäjä yrittää päivittää Fantasy Team -resurssia verkkosivustolla auth.requiresLogin on väliohjelmisto seuraavasti: export.requiresLogin = funktio (kysy, res, seuraava) { if (req.isAuthenticated ()) { palaa seuraavaksi () } return res.redirect ("/ signin"); }; Kun olen kirjautunut käyttäjäni sisään, simuloin istunnon päättymistä poistamalla istuntoevästeen. Tämän jälkeen tein verkkosivustolta PUT '/ fantasyteams / 123' -pyynnön päivittää fantasiatiimin numero 123. fantasyteams.update on yksinkertaisesti mongodb / mongoose-tallennusoperaatio: export.update = funktio (kysy, res) { var fantasyteam = req.fantasyteam; fantasyteam = _.extend (fantasyteam, req.body); fantasyteam.save (function (err) { res.jsonp (fantasyteam); }); }; Kuten odotettua, yllä oleva reitin käsittelijä (app.put ...) tarttui pyyntöön, välitti sen auth.requiresLogin-väliohjelmalle tarkistamaan, onko käyttäjä kirjautunut sisään. Joten käy ilmi, että käyttäjää ei ole kirjautunut sisään, koska poistin hänen istuntoevästensä. res.redirect kutsutaan odotetusti. Verkkosivusto ei kuitenkaan ohjaa sisäänkirjautumissivulle. Näen tämän node.js-komentolokeissa: PUT / kirjautuminen 404328ms Mitä tein väärin?
2021-02-25 08:21:02
Näyttää siltä, että ongelmana on, että sinulla ei ole reitin käsittelijää PUT / kirjautumista varten. Alkuperäinen pyyntö oli put, joten kun se uudelleenohjaa, se on edelleen osa samaa "put" -pyyntöä selaimelta. Lisää vain käsittelijä put / post / mitä tahansa varten app.all ('/ signin') 3 | Eikö vastausta etsit? Selaa muita kysymyksiä, jotka on merkitty node.js-istuntoevästeillä express passport.js tai esitä oma kysymyksesi.